#ifndef SYNTAX_H
#define SYNTAX_H
#include "symbol.h"
enum e_SynTaxState
{
    SNTX_NUL,   // 空状态,没有语法缩进动作
    SNTX_SP,    // 空格
    SNTX_LF_HT, // 换行或者缩进，每一个声明,函数定义，语句结束都要置为此状态
    SNTX_DELAY  // 延迟到去除一下个单词后确定输出格式
};

void translation_unit();
void function_calling_convention(int *fc);
void print_Tab(int n);
void syntax_indent(void);
int type_specifier(Type *type);
void argument_expression_list(void);
void primary_expression();
void postfix_expression();
void sizeof_expression();
void unary_expression();
void multiplicative_expression();
void additive_expression();
void relational_expression();
void equality_expression();
void assignment_expression();
void expression();
void return_statement();
void break_statement();
void continue_statement();
void for_statement();
void if_statement();
void expression_statement();
int is_type_specifier(int v);
void compound_statement();
void statement();
void initializer();
void funcbody();
void parameter_type_list();
void direct_declarator_postfix();
void direct_declarator();
void struct_member_alignment();
void declarator();
void struct_declaration();
void struct_declaration_list();
void struct_specifier();
void external_declaration(int l);
void translation_unit();
int calc_align(int n,int align);
int type_size(Type *t, int *a);
#endif